package com.eddie.strategy.jdk;

import java.util.Arrays;
import java.util.Comparator;

/**
 * @author Eddie
 * @date 2022/08/08 14:54
 **/
public class Strategy {
    public static void main(String[] args) {
        Integer[] data = {9, 1, 2, 8, 4, 3};

        /*
        说明：
        1、实现了Comparator接口（策略接口），匿名类对象new Comparator<>(){...}2
        2、对象new Comparator<>(){..} 就是实现了策略接口的对象
        3、public int compare(Integer o1, Integer o2) {} 制定了具体的处理方式
         */
        Comparator<Integer> comparator = new Comparator<>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o1 > o2 ? 1 : -1;
            }
        };


        //说明
//        public static <T> void sort(T[] a, Comparator<? super T> c) {
//            if (c == null) {
//                sort(a);
//            } else {
//                if (Arrays.LegacyMergeSort.userRequested)
//                    legacyMergeSort(a, c); //使用策略对象comparator
//                else
//                    TimSort.sort(a, 0, a.length, c, null, 0, 0);
//            }
//        }
        Arrays.sort(data, comparator);
        //正序排序
        System.out.println(Arrays.toString(data));


        //通过lambda表达式实现
        Integer[] data2 = {312, 13, 52, 86, 42, 64};

        Arrays.sort(data2, (var1, var2) -> {
            if (var1.compareTo(var2) > 0) {
                return 1;
            }
            return -1;
        });
        System.out.println(Arrays.toString(data2));
    }
}
